package ceylon;

public final class Integer
{
    private final long value;
    private Integer(long l) {
        value = l;
    }

    public static ceylon.Integer instance(long l) {
        return new ceylon.Integer(l);
    }

    public ceylon.Integer operatorAdd(ceylon.Integer op) {
        return instance(value + op.value);
    }

    public ceylon.Integer operatorSubtract(ceylon.Integer op) {
        return instance(value - op.value);
    }

    public ceylon.Integer operatorMultiply(ceylon.Integer op) {
        return instance(value * op.value);
    }

    public ceylon.Integer operatorPower(ceylon.Integer op) {
        return instance((long) Math.pow(value, op.value)); // FIXME: ugly
    }

    public ceylon.Integer operatorDivide(ceylon.Integer op) {
        return instance(value / op.value);
    }

    public ceylon.Integer operatorModulo(ceylon.Integer op) {
        return instance(value % op.value);
    }

    public ceylon.Integer operatorBitwiseAnd(ceylon.Integer op) {
        return instance(value & op.value);
    }

    public ceylon.Integer operatorBitwiseOr(ceylon.Integer op) {
        return instance(value | op.value);
    }

    public ceylon.Integer operatorBitwiseXor(ceylon.Integer op) {
        return instance(value ^ op.value);
    }

    public ceylon.String asString() {
        return ceylon.String.instance(java.lang.Long.toString(value));
    }
}

@@ -252,19 +252,12 @@
 ger 
-operatorAdd
+plus
 (cey
@@ -354,24 +354,13 @@
 ger 
-operatorSubtract
+minus
 (cey
@@ -457,24 +457,13 @@
 ger 
-operatorMultiply
+times
 (cey
@@ -560,21 +560,15 @@
 ger 
-operatorPower
+divided
 (cey
@@ -613,30 +613,15 @@
 nce(
-(long) Math.pow(
 value
-,
+ /
  op.
@@ -630,25 +630,9 @@
 lue)
-); // FIXME: ugly
+;
 %0A   
@@ -665,22 +665,17 @@
 ger 
-operatorDivi
+remain
 de
+r
 (cey
@@ -714,33 +714,33 @@
  instance(value 
-/
+%25
  op.value);%0A    
@@ -772,22 +772,13 @@
 ger 
-operatorModulo
+power
 (cey
@@ -811,39 +811,54 @@
 return instance(
+(long) Math.pow(
 value
- %25
+,
  op.value);%0A    
@@ -843,33 +843,49 @@
 value, op.value)
+)
 ;
+ // FIXME: ugly
 %0A    %7D%0A%0A    publ
@@ -906,24 +906,9 @@
 ger 
-operatorBitwiseA
+a
 nd(c
@@ -1008,23 +1008,8 @@
 er o
-peratorBitwiseO
 r(ce
@@ -1107,24 +1107,9 @@
 ger 
-operatorBitwiseX
+x
 or(c

Change method names to match the spec