anchor.diff:  
   #[derive(Clone)]
   pub struct IndexedShape {
  -    id: String,
  +    id:       String,
       doc_type: String,
  -    index: String,
  -    path: String
  +    index:    String,
  +    path:     String
  +}
  +
  +impl IndexedShape {
  +    pub fn new<A, B, C, D>(id: A, doc_type: B, index: C, path: D) -> IndexedShape
  +        where A: Into<String>,
  +              B: Into<String>,
  +              C: Into<String>,
  +              D: Into<String>
  +    {
  +        IndexedShape {
  +            id: id.into(),
  +            doc_type: doc_type.into(),
  +            index: index.into(),
  +            path: path.into()
  +        }
  +    }
   }
   
   impl ToJson for IndexedShape {
  
positive.code: 
  #[derive(Clone)]
  pub struct Shape {
      shape_type: String,
      coordinates: Vec<(f64, f64)>
  }
  
  impl ToJson for Shape {
  
negative.code: pub struct CombinationMinimumShouldMatch {
      first: MinimumShouldMatch,
      second: MinimumShouldMatch
  }
  
  impl CombinationMinimumShouldMatch {
      pub fn new<A, B>(first: A, second: B) -> CombinationMinimumShouldMatch
          where A: Into<MinimumShouldMatch>,
                B: Into<MinimumShouldMatch>
      {
          CombinationMinimumShouldMatch {
              first:  first.into(),
              second: second.into()
          }
      }
  }
  
  impl ToString for CombinationMinimumShouldMatch {
  