Java typesystem