import java.util.*; interface Part {} interface Assembly { Collection getParts(); // Returns a collection of Parts } class Inventory { public static void addAssembly(String name, Collection parts) {} // Adds an assembly into the DB public static Assembly getAssembly(String name) { return null; } // Looks up an assembly in the DB } class Blade implements Part {} class Guillotine implements Part {} class G25 { public static void main(String[] args) { Collection<Part> c = new ArrayList<Part>(); c.add(new Guillotine()) ; c.add(new Blade()); Inventory.addAssembly("thingee", c); // pass to "raw type" Collection<Part> k = Inventory.getAssembly("thingee").getParts(); // return from "raw type" } }