// Path: kawala-common/src/main/java/com/kaching/platform/common/AbstractIdentifier.java
// public abstract class AbstractIdentifier<I extends Comparable<I>> implements
//     Comparable<AbstractIdentifier<I>>, Serializable {
// 
//   private static final long serialVersionUID = 8147623822365809694L;
// 
//   private final I id;
// 
//   /**
//    * Creates an identifier.
//    * @param id the wrapped identifier
//    */
//   protected AbstractIdentifier(I id) {
//     this.id = checkNotNull(id);
//   }
// 
//   /**
//    * Gets the wrapped identifier.
//    * @return the wrapped identifier
//    */
//   public I getId() {
//     return id;
//   }
// 
//   @Override
//   public boolean equals(Object that) {
//     return
//         this == that ||
//         (that != null &&
//          this.getClass().equals(that.getClass())) &&
//          id.equals(((AbstractIdentifier<?>) that).id);
//   }
// 
//   @Override
//   public int compareTo(AbstractIdentifier<I> that) {
//     if (that == null) {
//       return 1;
//     }
//     int result = this.getId().compareTo(that.getId());
//     return result != 0 ? result :
//       this.getClass().toString().compareTo(
//       that.getClass().toString());
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hashCode(id);
//   }
// 
//   @Override
//   public String toString() {
//     return String.valueOf(id);
//   }
// 
// }
// 
// Path: kawala-converters/src/main/java/com/kaching/platform/converters/Converter.java
// public interface Converter<T> extends ToString<T>, FromString<T> {
// }


import com.kaching.platform.common.AbstractIdentifier;
import com.kaching.platform.converters.ConvertedBy;
import com.kaching.platform.converters.Converter;

/**
 * Copyright 2010 Wealthfront Inc. Licensed under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package com.kaching.platform.converters.someotherpackage;


@ConvertedBy(ValueWithConverterAsInnerClass.Cvter.class)
public class ValueWithConverterAsInnerClass extends AbstractIdentifier<Integer> {

  private static final long serialVersionUID = -290291493253896409L;

  ValueWithConverterAsInnerClass(int val) {
    super(val);
  }


// Path: kawala-common/src/main/java/com/kaching/platform/common/AbstractIdentifier.java
// public abstract class AbstractIdentifier<I extends Comparable<I>> implements
//     Comparable<AbstractIdentifier<I>>, Serializable {
// 
//   private static final long serialVersionUID = 8147623822365809694L;
// 
//   private final I id;
// 
//   /**
//    * Creates an identifier.
//    * @param id the wrapped identifier
//    */
//   protected AbstractIdentifier(I id) {
//     this.id = checkNotNull(id);
//   }
// 
//   /**
//    * Gets the wrapped identifier.
//    * @return the wrapped identifier
//    */
//   public I getId() {
//     return id;
//   }
// 
//   @Override
//   public boolean equals(Object that) {
//     return
//         this == that ||
//         (that != null &&
//          this.getClass().equals(that.getClass())) &&
//          id.equals(((AbstractIdentifier<?>) that).id);
//   }
// 
//   @Override
//   public int compareTo(AbstractIdentifier<I> that) {
//     if (that == null) {
//       return 1;
//     }
//     int result = this.getId().compareTo(that.getId());
//     return result != 0 ? result :
//       this.getClass().toString().compareTo(
//       that.getClass().toString());
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hashCode(id);
//   }
// 
//   @Override
//   public String toString() {
//     return String.valueOf(id);
//   }
// 
// }
// 
// Path: kawala-converters/src/main/java/com/kaching/platform/converters/Converter.java
// public interface Converter<T> extends ToString<T>, FromString<T> {
// }


// Path: kawala-converters/src/test/java/com/kaching/platform/converters/someotherpackage/ValueWithConverterAsInnerClass.java
import com.kaching.platform.common.AbstractIdentifier;
import com.kaching.platform.converters.ConvertedBy;
import com.kaching.platform.converters.Converter;

/**
 * Copyright 2010 Wealthfront Inc. Licensed under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package com.kaching.platform.converters.someotherpackage;


@ConvertedBy(ValueWithConverterAsInnerClass.Cvter.class)
public class ValueWithConverterAsInnerClass extends AbstractIdentifier<Integer> {

  private static final long serialVersionUID = -290291493253896409L;

  ValueWithConverterAsInnerClass(int val) {
    super(val);
  }


  static class Cvter implements Converter<ValueWithConverterAsInnerClass> {
