private void Initialize(IQueryable<ComposablePartDefinition> parts)
{
var partsInfo = parts
.AsParallel()
.Where(part => part != null && this.PartFilter(new FilteredPart(part)))
.Select(part => new { Part = part, IsShared = IsShared(part) });
sharedParts.AddRange(partsInfo.Where(part => part.IsShared).Select(part => part.Part));
nonSharedParts.AddRange(partsInfo.Where(part => !part.IsShared).Select(part => part.Part));
initialized = true;
}