package ceylon.language;

import com.redhat.ceylon.compiler.java.metadata.Ceylon;
import com.redhat.ceylon.compiler.java.metadata.Name;
import com.redhat.ceylon.compiler.java.metadata.TypeInfo;
import com.redhat.ceylon.compiler.java.metadata.TypeParameter;
import com.redhat.ceylon.compiler.java.metadata.TypeParameters;
import com.redhat.ceylon.compiler.java.metadata.Variance;

@Ceylon
@TypeParameters(@TypeParameter(value = "Element", variance = Variance.OUT))
public interface Collection<Element> 
        extends Iterable<Element>, Sized, Category,
                Cloneable<Collection<? extends Element>> {
    
    @Override
    public boolean getEmpty();

    @Override
    public boolean contains(@Name("element") @TypeInfo("ceylon.language.Object")
            java.lang.Object element);
    
    public long count(@Name("element") @TypeInfo("ceylon.language.Object")
            java.lang.Object element);


}

@@ -129,16 +129,80 @@
 a.Name;%0A
+import com.redhat.ceylon.compiler.java.metadata.SatisfiedTypes;%0A
 import c
@@ -521,16 +521,198 @@
 e.OUT))%0A
+@SatisfiedTypes(%7B%22ceylon.language.Iterable%3CElement%3E%22,%0A        %22ceylon.language.Sized%22,%0A        %22ceylon.language.Category%22,%0A        %22ceylon.language.Cloneable%3CCollection%3CElement%3E%3E%22%7D)%0A
 public i

Add @SatisfiedTypes to Colletion