anchor.diff:  abstract class Either<S, T> extends Monad<T> {
     /// The wrapped value. An instance of [S] for [Left] of [T] for [Right].
     dynamic /*S | T*/ get value;
  +
  +  Either<T, S> swap();
   }
   
   /// Left set, usually denotes the absence of a value, e.g. en error message.
  
positive.code:   Either<S, U> map<U>(Function1<T, U> f) => new Right<S, U>(f(value));
  
    @override
    String toString() => 'Right{value: $value}';
  }
  
negative.code: 
    @override
    Left<S, U> map<U>(Function1<T, U> f) => new Left<S, U>(value);
  
    @override
    Either<T, S> swap() => new Right(value);
  
    @override
    String toString() => 'Left{value: $value}';
  