@Override public NamedThing instantiate(PropertyLookup<NamedThing> lookup) { return new NamedThing(lookup.valueOf(name, "anonymous")); } };
@Override public Identity instantiate(PropertyLookup<Identity> lookup) { return new Identity(lookup.valueOf(name, "default-name")); } };
@Override public ThingToMake instantiate(PropertyLookup<ThingToMake> lookup) { return new ThingToMake(lookup.valueOf(name, "Nemo"), lookup.valueOf(age, 99)); } };
@Override public SecretAgent instantiate(PropertyLookup<SecretAgent> lookup) { return new SecretAgent( lookup.valueOf(assumedIdentities, Collections.<Identity>emptyList())); } };
@Override public Tree<F> instantiate(PropertyLookup<Tree<F>> lookup) { Property<Tree<F>, Iterable<? extends F>> fruit = fruit(); List<F> noFruit = emptyList(); return new Tree<>(lookup.valueOf(fruit, noFruit)); } };
@Override public Identified instantiate(PropertyLookup<Identified> lookup) { return new Identified(lookup.valueOf(identity, new Identity("default-identity"))); } };
@Override public AppleCart instantiate(PropertyLookup<AppleCart> lookup) { return new AppleCart(lookup.valueOf(apples, listOf(an(Apple)))); } };
@Override public ThingContainer instantiate(PropertyLookup<ThingContainer> lookup) { return new ThingContainer(lookup.valueOf(thing, make(a(ThingToMake)))); } };
@Override public FruitBowl instantiate(PropertyLookup<FruitBowl> lookup) { return new FruitBowl( lookup.valueOf(contents, listOf(an(Apple), a(Banana)).value())); } };