package com.bio4j.angulillos;

interface HasFromArity { Arity fromArity(); }
interface HasToArity   { Arity   toArity(); }

/* ### Arities */
public enum Arity {

  One,        // Exactly one: X
  AtMostOne,  // One or none: Optional[X]
  AtLeastOne, // Non-empty list: NEList[X]
  Any;        // Usual list: List[X]

  /* #### In-arities */
  public interface FromAtLeastOne extends FromAny, HasFromArity { default Arity fromArity() { return Arity.AtLeastOne; } }
  public interface FromOne        extends FromAtLeastOne, FromAtMostOne, HasFromArity { default Arity fromArity() { return Arity.One; } }
  public interface FromAtMostOne  extends FromAny, HasFromArity { default Arity fromArity() { return Arity.AtMostOne; } }
  public interface FromAny        extends HasFromArity { default Arity fromArity() { return Arity.Any; } }

  /* #### Out-arities */
  public interface ToAtLeastOne extends ToAny, HasToArity { default Arity toArity() { return Arity.AtLeastOne; } }
  public interface ToOne        extends ToAtLeastOne, ToAtMostOne, HasToArity { default Arity toArity() { return Arity.One; } }
  public interface ToAtMostOne  extends ToAny, HasToArity { default Arity toArity() { return Arity.AtMostOne; } }
  public interface ToAny        extends HasToArity { default Arity toArity() { return Arity.Any; } }
}

@@ -329,39 +329,32 @@
 In-arities */%0A  
-public 
 interface FromAt
@@ -445,39 +445,32 @@
 LeastOne; %7D %7D%0A  
-public 
 interface FromOn
@@ -576,39 +576,32 @@
 rity.One; %7D %7D%0A  
-public 
 interface FromAt
@@ -691,39 +691,32 @@
 tMostOne; %7D %7D%0A  
-public 
 interface FromAn
@@ -825,23 +825,16 @@
 es */%0A  
-public 
 interfac
@@ -925,39 +925,32 @@
 LeastOne; %7D %7D%0A  
-public 
 interface ToOne 
@@ -1046,39 +1046,32 @@
 rity.One; %7D %7D%0A  
-public 
 interface ToAtMo
@@ -1161,23 +1161,16 @@
 ; %7D %7D%0A  
-public 
 interfac

remove public qualifier from nested interfaces in Arity