+ this.copyHistory = (byte) copyFlags(copyType);
+ }
+
+ StatementContextBase(final StatementContextBase<A, D, E> prototype, final CopyType copyType) {
+ this.definition = prototype.definition;
+ this.copyHistory = (byte) (copyFlags(copyType) | prototype.copyHistory & ~COPY_LAST_TYPE_MASK);
+ }
+
+ private static int copyFlags(final CopyType copyType) {
+ return historyFlags(copyType) | copyType.ordinal();
+ }
+
+ private static byte historyFlags(final CopyType copyType) {
+ switch (copyType) {
+ case ADDED_BY_AUGMENTATION:
+ return COPY_ADDED_BY_AUGMENTATION;
+ case ADDED_BY_USES:
+ return COPY_ADDED_BY_USES;
+ case ADDED_BY_USES_AUGMENTATION:
+ return COPY_ADDED_BY_AUGMENTATION | COPY_ADDED_BY_USES;
+ case ORIGINAL:
+ return COPY_ORIGINAL;
+ default:
+ throw new VerifyException("Unhandled type " + copyType);
+ }