import { satisfiesConcept } from "../utils/concept" export class ForwardIterator { move(rhs) { return this.copy(rhs) } get value() { return this.deref().value } set value(value) { return this.deref().value = value } neq(rhs) { return !this.eq(rhs) } } ForwardIterator.is = function (obj, ...args) { const pure_virtual = [ 'clone', 'copy', 'deref', 'inc', 'eq' ] const virtual = [ 'move', 'value', 'neq', ] return satisfiesConcept(obj, pure_virtual, virtual, ...args) }