anchor.diff:    
     Expression negate = -exp;
     print(negate);
  +  
  +  Expression vector = new Vector([x*new Number(1), div, exp]);
  +  print('vector: ${vector}');
  +  print('vectorS: ${vector.simplify()}');
  +  print('vectorSD: ${vector.simplify().derive('x')}');
  +  
  +  Expression logVar = new Log(new Number(11), new Variable('x'));
  +  print('logVar: ${logVar.toString()}');
  +  print('logVarD: ${logVar.derive('x').toString()}');
  +  
  +  Expression composite = new CompositeFunction(logVar, sqrt);
  +  print('composite: ${composite.toString()}');
  +  print('compositeD: ${composite.derive('x').toString()}');
  +  print('compositeDS: ${composite.derive('x').simplify().toString()}');
  +
  +  Expression fExpr = new Vector([x, new Plus(x,1), new Minus(x,1)]); // Transforms x to 3-dimensional vector
  +  MathFunction f = new CustomFunction('f', [x], fExpr);     // R -> R^3
  +  Expression gExpr = x + a + b;
  +  MathFunction g = new CustomFunction('g', [x, a, b], gExpr);      // R^3 -> R
  +  composite = new CompositeFunction(f, g); // R -> R
  +  
  +  print('composite2: ${composite.toString()}');
  +  
   }
   
   class Tokenizer {
  
positive.code:    *     
     * To create a naturally based logarithm, see [Ln].
     */
    Log(Expression base, Expression arg): super.binary("log", base, arg);
    
    /**
     * Creates a natural logarithm.
     * Must only be used internally by the Ln class.
     */
    Log._ln(arg): super.binary("ln", new Number(Math.E), arg);
    
    /// The base of this logarithm.
    Expression get base => getParam(0);
  
negative.code:   Expression exp = new Power('x', 2);
    Expression mul = new Times('x', 'x');
    
    
    print('exp: ${exp.toString()}');
    print('expD: ${exp.derive('x').toString()}');
    print('expDSimp: ${exp.derive('x').simplify().toString()}');
  