protected Trait(int type, String... descriptors) {
    this.traitID = nextID++ ;
    this.type = type ;
    this.descriptors = descriptors ;
    this.descValues = new int[descriptors.length] ;
    
    int zeroIndex = 0, min = 100, max = 0, val ;
    for (String s : descriptors) { if (s == null) break ; else zeroIndex++ ; }
    for (int i = descriptors.length ; i-- > 0 ;) {
      val = descValues[i] = zeroIndex - i ;
      
      final String desc = descriptors[i] ;
      if (verboseInit && desc != null) {
        I.say("Value for "+desc+" is "+val) ;
      }
      
      if (val > max) max = val ;
      if (val < min) min = val ;
    }
    this.minVal = min ;
    this.maxVal = max ;
    
    traitsSoFar.add(this) ;
    allTraits.add(this) ;
  }