| Append(Lop input1,
      Lop input2,
      Lop input3,
      Types.DataType dt,
      Types.ValueType vt,
      boolean cbind,
      Types.ExecType et) | 
| AppendG(Lop input1,
       Lop input2,
       Lop input3,
       Lop input4,
       Types.DataType dt,
       Types.ValueType vt,
       boolean cbind,
       Types.ExecType et) | 
| AppendGAlignedSP(Lop input1,
                Lop input2,
                Lop input3,
                Types.DataType dt,
                Types.ValueType vt,
                boolean cbind) | 
| AppendM(Lop input1,
       Lop input2,
       Lop input3,
       Types.DataType dt,
       Types.ValueType vt,
       boolean cbind,
       boolean partitioned,
       Types.ExecType et) | 
| AppendR(Lop input1,
       Lop input2,
       Types.DataType dt,
       Types.ValueType vt,
       boolean cbind,
       Types.ExecType et) | 
| Binary(Lop input1,
      Lop input2,
      Types.OpOp2 op,
      Types.DataType dt,
      Types.ValueType vt,
      Types.ExecType et)Constructor to perform a binary operation. | 
| Binary(Lop input1,
      Lop input2,
      Types.OpOp2 op,
      Types.DataType dt,
      Types.ValueType vt,
      Types.ExecType et,
      int k) | 
| BinaryM(Lop input1,
       Lop input2,
       Types.OpOp2 op,
       Types.DataType dt,
       Types.ValueType vt,
       Types.ExecType et,
       boolean colVector)Constructor to perform a binary operation. | 
| BinaryScalar(Lop input1,
            Lop input2,
            Types.OpOp2 op,
            Types.DataType dt,
            Types.ValueType vt)Constructor to perform a scalar operation | 
| BinaryUAggChain(Lop input1,
               Types.OpOp2 bop,
               Types.AggOp uaop,
               Types.Direction uadir,
               Types.DataType dt,
               Types.ValueType vt,
               Types.ExecType et)Constructor to setup a map mult chain without weights | 
| CentralMoment(Lop input1,
             Lop input2,
             Lop input3,
             Types.DataType dt,
             Types.ValueType vt,
             Types.ExecType et) | 
| CentralMoment(Lop input1,
             Lop input2,
             Types.DataType dt,
             Types.ValueType vt,
             Types.ExecType et) | 
| Checkpoint(Lop input,
          Types.DataType dt,
          Types.ValueType vt,
          String level)TODO change string parameter storage.level to StorageLevel as soon as we can assume
 that Spark libraries are always available. | 
| Compression(Lop input,
           Types.DataType dt,
           Types.ValueType vt,
           Types.ExecType et,
           int singletonLookupKey) | 
| CoVariance(Lop input1,
          Lop input2,
          Lop input3,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et) | 
| CoVariance(Lop input1,
          Lop input2,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et) | 
| CoVariance(Lop input1,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et) | 
| CSVReBlock(Lop input,
          int blen,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et) | 
| Ctable(Lop[] inputLops,
      Ctable.OperationTypes op,
      Types.DataType dt,
      Types.ValueType vt,
      boolean ignoreZeros,
      boolean outputEmptyBlocks,
      Types.ExecType et) | 
| Ctable(Lop[] inputLops,
      Ctable.OperationTypes op,
      Types.DataType dt,
      Types.ValueType vt,
      Types.ExecType et) | 
| CumulativeOffsetBinary(Lop data,
                      Lop offsets,
                      Types.DataType dt,
                      Types.ValueType vt,
                      double init,
                      boolean broadcast,
                      Types.AggOp op,
                      Types.ExecType et) | 
| CumulativeOffsetBinary(Lop data,
                      Lop offsets,
                      Types.DataType dt,
                      Types.ValueType vt,
                      Types.AggOp op,
                      Types.ExecType et) | 
| CumulativePartialAggregate(Lop input,
                          Types.DataType dt,
                          Types.ValueType vt,
                          Types.AggOp op,
                          Types.ExecType et) | 
| Data(Types.OpOpData op,
    Lop input,
    HashMap<String,Lop> inputParametersLops,
    String name,
    String literal,
    Types.DataType dt,
    Types.ValueType vt,
    Types.FileFormat fmt)Constructor to setup read or write LOP
 In case of write: inputmust be provided. | 
| DataGen(Types.OpOpDG op,
       DataIdentifier id,
       HashMap<String,Lop> inputParametersLops,
       String baseDir,
       Types.DataType dt,
       Types.ValueType vt,
       Types.ExecType et)Creates a new Rand-LOP. | 
| DeCompression(Lop input,
             Types.DataType dt,
             Types.ValueType vt,
             Types.ExecType et) | 
| DnnTransform(Lop input1,
            Lop input2,
            Lop input3,
            Types.OpOpDnn op,
            Types.DataType dt,
            Types.ValueType vt,
            Types.ExecType et,
            int k) | 
| DnnTransform(Lop input1,
            Lop input2,
            Types.OpOpDnn op,
            Types.DataType dt,
            Types.ValueType vt,
            Types.ExecType et,
            int k) | 
| DnnTransform(Lop input,
            Types.OpOpDnn op,
            Types.DataType dt,
            Types.ValueType vt,
            Types.ExecType et,
            int k,
            double intermediateMemBudget)Constructor when we have one input. | 
| Federated(HashMap<String,Lop> inputLops,
         Types.DataType dataType,
         Types.ValueType valueType) | 
| GroupedAggregate(HashMap<String,Lop> inputParameterLops,
                Types.DataType dt,
                Types.ValueType vt,
                Types.ExecType et) | 
| GroupedAggregate(HashMap<String,Lop> inputParameterLops,
                Types.DataType dt,
                Types.ValueType vt,
                Types.ExecType et,
                boolean broadcastGroups) | 
| GroupedAggregate(HashMap<String,Lop> inputParameterLops,
                Types.DataType dt,
                Types.ValueType vt,
                Types.ExecType et,
                int k) | 
| GroupedAggregateM(HashMap<String,Lop> inputParameterLops,
                 Types.DataType dt,
                 Types.ValueType vt,
                 boolean partitioned,
                 Types.ExecType et) | 
| LeftIndex(Lop lhsInput,
         Lop rhsInput,
         Lop rowL,
         Lop rowU,
         Lop colL,
         Lop colU,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et) | 
| LeftIndex(Lop lhsInput,
         Lop rhsInput,
         Lop rowL,
         Lop rowU,
         Lop colL,
         Lop colU,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         LeftIndex.LixCacheType type) | 
| Lop(Lop.Type t,
   Types.DataType dt,
   Types.ValueType vt)Constructor to be invoked by base class. | 
| MapMult(Lop input1,
       Lop input2,
       Types.DataType dt,
       Types.ValueType vt,
       boolean rightCache,
       boolean partitioned,
       boolean emptyBlocks,
       AggBinaryOp.SparkAggType aggtype)Constructor to setup a partial Matrix-Vector Multiplication for Spark | 
| MapMultChain(Lop input1,
            Lop input2,
            Lop input3,
            MapMultChain.ChainType chain,
            Types.DataType dt,
            Types.ValueType vt,
            Types.ExecType et)Constructor to setup a map mult chain with weights | 
| MapMultChain(Lop input1,
            Lop input2,
            Types.DataType dt,
            Types.ValueType vt,
            Types.ExecType et)Constructor to setup a map mult chain without weights | 
| MatMultCP(Lop input1,
         Lop input2,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et) | 
| MatMultCP(Lop input1,
         Lop input2,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         boolean isLeftTransposed,
         boolean isRightTransposed) | 
| MatMultCP(Lop input1,
         Lop input2,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         int k) | 
| MatMultCP(Lop input1,
         Lop input2,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         int k,
         boolean isLeftTransposed,
         boolean isRightTransposed) | 
| MMCJ(Lop input1,
    Lop input2,
    Types.DataType dt,
    Types.ValueType vt,
    boolean outputEmptyBlocks,
    AggBinaryOp.SparkAggType aggtype,
    Types.ExecType et) | 
| MMCJ(Lop input1,
    Lop input2,
    Types.DataType dt,
    Types.ValueType vt,
    MMCJ.MMCJType type,
    Types.ExecType et)Constructor to perform a cross product operation. | 
| MMRJ(Lop input1,
    Lop input2,
    Types.DataType dt,
    Types.ValueType vt,
    Types.ExecType et)Constructor to perform a cross product operation. | 
| MMTSJ(Lop input1,
     Types.DataType dt,
     Types.ValueType vt,
     Types.ExecType et,
     MMTSJ.MMTSJType type) | 
| MMTSJ(Lop input1,
     Types.DataType dt,
     Types.ValueType vt,
     Types.ExecType et,
     MMTSJ.MMTSJType type,
     boolean multiPass) | 
| MMTSJ(Lop input1,
     Types.DataType dt,
     Types.ValueType vt,
     Types.ExecType et,
     MMTSJ.MMTSJType type,
     boolean multiPass,
     int k) | 
| MMZip(Lop input1,
     Lop input2,
     Types.DataType dt,
     Types.ValueType vt,
     boolean tRewrite,
     Types.ExecType et) | 
| Nary(Types.OpOpN operationType,
    Types.DataType dt,
    Types.ValueType vt,
    Lop[] inputLops,
    Types.ExecType et) | 
| ParameterizedBuiltin(HashMap<String,Lop> paramLops,
                    Types.ParamBuiltinOp op,
                    Types.DataType dt,
                    Types.ValueType vt,
                    Types.ExecType et) | 
| ParameterizedBuiltin(HashMap<String,Lop> paramLops,
                    Types.ParamBuiltinOp op,
                    Types.DataType dt,
                    Types.ValueType vt,
                    Types.ExecType et,
                    boolean bRmEmptyBC) | 
| ParameterizedBuiltin(HashMap<String,Lop> paramLops,
                    Types.ParamBuiltinOp op,
                    Types.DataType dt,
                    Types.ValueType vt,
                    Types.ExecType et,
                    int k) | 
| PartialAggregate(Lop input,
                Types.AggOp op,
                Types.Direction direct,
                Types.DataType dt,
                Types.ValueType vt,
                AggBinaryOp.SparkAggType aggtype,
                Types.ExecType et) | 
| PartialAggregate(Lop input,
                Types.AggOp op,
                Types.Direction direct,
                Types.DataType dt,
                Types.ValueType vt,
                Types.ExecType et,
                int k) | 
| PickByCount(Lop input1,
           Lop input2,
           Types.DataType dt,
           Types.ValueType vt,
           PickByCount.OperationTypes op,
           Types.ExecType et) | 
| PickByCount(Lop input1,
           Lop input2,
           Types.DataType dt,
           Types.ValueType vt,
           PickByCount.OperationTypes op,
           Types.ExecType et,
           boolean inMemoryInput) | 
| PMapMult(Lop input1,
        Lop input2,
        Types.DataType dt,
        Types.ValueType vt) | 
| PMMJ(Lop pminput,
    Lop rightinput,
    Lop nrow,
    Types.DataType dt,
    Types.ValueType vt,
    boolean partitioned,
    boolean emptyBlocks,
    Types.ExecType et)Constructor to setup a Permutation Matrix Multiplication | 
| ReBlock(Lop input,
       int blen,
       Types.DataType dt,
       Types.ValueType vt,
       boolean outputEmptyBlocks,
       Types.ExecType et) | 
| RightIndex(Lop input,
          Lop rowL,
          Lop rowU,
          Lop colL,
          Lop colU,
          Lop rowDim,
          Lop colDim,
          Types.DataType dt,
          Types.ValueType vt,
          AggBinaryOp.SparkAggType aggtype,
          Types.ExecType et) | 
| RightIndex(Lop input,
          Lop rowL,
          Lop rowU,
          Lop colL,
          Lop colU,
          Lop rowDim,
          Lop colDim,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et) | 
| RightIndex(Lop input,
          Lop rowL,
          Lop rowU,
          Lop colL,
          Lop colU,
          Lop rowDim,
          Lop colDim,
          Types.DataType dt,
          Types.ValueType vt,
          Types.ExecType et,
          boolean forleft) | 
| SortKeys(Lop input,
        boolean desc,
        SortKeys.OperationTypes op,
        Types.DataType dt,
        Types.ValueType vt,
        Types.ExecType et) | 
| SortKeys(Lop input1,
        Lop input2,
        SortKeys.OperationTypes op,
        Types.DataType dt,
        Types.ValueType vt,
        Types.ExecType et) | 
| SortKeys(Lop input,
        SortKeys.OperationTypes op,
        Types.DataType dt,
        Types.ValueType vt,
        Types.ExecType et) | 
| SpoofFused(ArrayList<Lop> inputs,
          Types.DataType dt,
          Types.ValueType vt,
          Class<?> cla,
          SpoofCompiler.GeneratorAPI api,
          String genVarName,
          int k,
          Types.ExecType etype) | 
| Sql(HashMap<String,Lop> inputParametersLops,
   Types.DataType dt,
   Types.ValueType vt) | 
| Ternary(Types.OpOp3 op,
       Lop input1,
       Lop input2,
       Lop input3,
       Types.DataType dt,
       Types.ValueType vt,
       Types.ExecType et,
       int numThreads) | 
| TernaryAggregate(Lop input1,
                Lop input2,
                Lop input3,
                Types.AggOp aggOp,
                Types.OpOp2 binOp,
                Types.Direction direction,
                Types.DataType dt,
                Types.ValueType vt,
                Types.ExecType et,
                int k) | 
| Transform(Lop[] inputs,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         boolean outputEmptyBlock,
         Types.ExecType et) | 
| Transform(Lop[] inputs,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         boolean bSortIndInMem) | 
| Transform(Lop[] inputs,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         boolean bSortIndInMem,
         int k) | 
| Transform(Lop[] inputs,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         int k) | 
| Transform(Lop input,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et) | 
| Transform(Lop input,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         boolean bSortIndInMem) | 
| Transform(Lop input,
         Types.ReOrgOp op,
         Types.DataType dt,
         Types.ValueType vt,
         Types.ExecType et,
         int k) | 
| UAggOuterChain(Lop input1,
              Lop input2,
              Types.AggOp uaop,
              Types.Direction uadir,
              Types.OpOp2 bop,
              Types.DataType dt,
              Types.ValueType vt,
              Types.ExecType et)Constructor to setup a unaryagg outer chain | 
| Unary(Lop input1,
     Lop input2,
     Types.OpOp1 op,
     Types.DataType dt,
     Types.ValueType vt,
     Types.ExecType et,
     int numThreads)Constructor to perform a unary operation with 2 inputs | 
| Unary(Lop input1,
     Types.OpOp1 op,
     Types.DataType dt,
     Types.ValueType vt,
     Types.ExecType et,
     int numThreads,
     boolean inplace)Constructor to perform a unary operation with 1 input. | 
| UnaryCP(Lop input,
       Types.OpOp1 op,
       Types.DataType dt,
       Types.ValueType vt) | 
| UnaryCP(Lop input,
       Types.OpOp1 op,
       Types.DataType dt,
       Types.ValueType vt,
       Types.ExecType et)Constructor to perform a scalar operation | 
| WeightedCrossEntropy(Lop input1,
                    Lop input2,
                    Lop input3,
                    Lop input4,
                    Types.DataType dt,
                    Types.ValueType vt,
                    WeightedCrossEntropy.WCeMMType wt,
                    Types.ExecType et) | 
| WeightedCrossEntropyR(Lop input1,
                     Lop input2,
                     Lop input3,
                     Lop input4,
                     Types.DataType dt,
                     Types.ValueType vt,
                     WeightedCrossEntropy.WCeMMType wt,
                     boolean cacheU,
                     boolean cacheV,
                     Types.ExecType et) | 
| WeightedDivMM(Lop input1,
             Lop input2,
             Lop input3,
             Lop input4,
             Types.DataType dt,
             Types.ValueType vt,
             WeightedDivMM.WDivMMType wt,
             Types.ExecType et) | 
| WeightedDivMMR(Lop input1,
              Lop input2,
              Lop input3,
              Lop input4,
              Types.DataType dt,
              Types.ValueType vt,
              WeightedDivMM.WDivMMType wt,
              boolean cacheU,
              boolean cacheV,
              Types.ExecType et) | 
| WeightedSigmoid(Lop input1,
               Lop input2,
               Lop input3,
               Types.DataType dt,
               Types.ValueType vt,
               WeightedSigmoid.WSigmoidType wt,
               Types.ExecType et) | 
| WeightedSigmoidR(Lop input1,
                Lop input2,
                Lop input3,
                Types.DataType dt,
                Types.ValueType vt,
                WeightedSigmoid.WSigmoidType wt,
                boolean cacheU,
                boolean cacheV,
                Types.ExecType et) | 
| WeightedSquaredLoss(Lop input1,
                   Lop input2,
                   Lop input3,
                   Lop input4,
                   Types.DataType dt,
                   Types.ValueType vt,
                   WeightedSquaredLoss.WeightsType wt,
                   Types.ExecType et) | 
| WeightedSquaredLossR(Lop input1,
                    Lop input2,
                    Lop input3,
                    Lop input4,
                    Types.DataType dt,
                    Types.ValueType vt,
                    WeightedSquaredLoss.WeightsType wt,
                    boolean cacheU,
                    boolean cacheV,
                    Types.ExecType et) | 
| WeightedUnaryMM(Lop input1,
               Lop input2,
               Lop input3,
               Types.DataType dt,
               Types.ValueType vt,
               WeightedUnaryMM.WUMMType wt,
               Types.OpOp1 op,
               Types.ExecType et) | 
| WeightedUnaryMMR(Lop input1,
                Lop input2,
                Lop input3,
                Types.DataType dt,
                Types.ValueType vt,
                WeightedUnaryMM.WUMMType wt,
                Types.OpOp1 op,
                boolean cacheU,
                boolean cacheV,
                Types.ExecType et) |