#ifndef __X10_ARRAY_POINT_H
#define __X10_ARRAY_POINT_H

#include <x10rt.h>


#define X10_LANG_OBJECT_H_NODEPS
#include <x10/lang/Object.h>
#undef X10_LANG_OBJECT_H_NODEPS
#define X10_LANG_FUN_0_1_H_NODEPS
#include <x10/lang/Fun_0_1.h>
#undef X10_LANG_FUN_0_1_H_NODEPS
#define X10_UTIL_ORDERED_H_NODEPS
#include <x10/util/Ordered.h>
#undef X10_UTIL_ORDERED_H_NODEPS
#define X10_LANG_COMPARABLE_H_NODEPS
#include <x10/lang/Comparable.h>
#undef X10_LANG_COMPARABLE_H_NODEPS
#define X10_LANG_INT_H_NODEPS
#include <x10/lang/Int.h>
#undef X10_LANG_INT_H_NODEPS
namespace x10 { namespace lang { 
class Int;
} } 
namespace x10 { namespace array { 
template<class TPMGL(T)> class Array;
} } 
namespace x10 { namespace lang { 
class ArrayIndexOutOfBoundsException;
} } 
namespace x10 { namespace lang { 
class String;
} } 
namespace x10 { namespace lang { 
class Boolean;
} } 
namespace x10 { namespace compiler { 
class CompilerFlags;
} } 
namespace x10 { namespace lang { 
class FailedDynamicCheckException;
} } 
namespace x10 { namespace lang { 
class Any;
} } 
namespace x10 { namespace array { 

class Point : public x10::lang::Object   {
    public:
    RTT_H_DECLS_CLASS
    
    x10_int FMGL(rank);
    
    static x10aux::itable_entry _itables[5];
    
    virtual x10aux::itable_entry* _getITables() { return _itables; }
    
    static x10::lang::Fun_0_1<x10_int, x10_int>::itable<x10::array::Point > _itable_0;
    
    static x10::lang::Any::itable<x10::array::Point > _itable_1;
    
    static x10::util::Ordered<x10aux::ref<x10::array::Point> >::itable<x10::array::Point > _itable_2;
    
    static x10::lang::Comparable<x10aux::ref<x10::array::Point> >::itable<x10::array::Point > _itable_3;
    
    x10_int FMGL(c0);
    
    x10_int FMGL(c1);
    
    x10_int FMGL(c2);
    
    x10_int FMGL(c3);
    
    x10aux::ref<x10::array::Array<x10_int> > FMGL(cs);
    
    void _constructor(x10aux::ref<x10::array::Array<x10_int> > coords);
    
    static x10aux::ref<x10::array::Point> _make(x10aux::ref<x10::array::Array<x10_int> > coords);
    
    void _constructor(x10_int i0);
    
    static x10aux::ref<x10::array::Point> _make(x10_int i0);
    
    void _constructor(x10_int i0, x10_int i1);
    
    static x10aux::ref<x10::array::Point> _make(x10_int i0, x10_int i1);
    
    void _constructor(x10_int i0, x10_int i1, x10_int i2);
    
    static x10aux::ref<x10::array::Point> _make(x10_int i0, x10_int i1, x10_int i2);
    
    void _constructor(x10_int i0, x10_int i1, x10_int i2, x10_int i3);
    
    static x10aux::ref<x10::array::Point> _make(x10_int i0, x10_int i1, x10_int i2,
                                                x10_int i3);
    
    virtual x10_int __apply(x10_int i);
    virtual x10aux::ref<x10::lang::Fun_0_1<x10_int, x10_int> > coords(
      );
    template<class TPMGL(T)> static x10aux::ref<x10::array::Point>
      make(x10aux::ref<x10::array::Array<TPMGL(T)> > r);
    static x10aux::ref<x10::array::Point> make(x10_int rank, x10aux::ref<x10::lang::Fun_0_1<x10_int, x10_int> > init);
    static x10aux::ref<x10::array::Point> make(x10_int i0);
    static x10aux::ref<x10::array::Point> make(x10_int i0, x10_int i1);
    static x10aux::ref<x10::array::Point> make(x10_int i0, x10_int i1,
                                               x10_int i2);
    static x10aux::ref<x10::array::Point> make(x10_int i0, x10_int i1,
                                               x10_int i2, x10_int i3);
    template<class TPMGL(T)> static x10aux::ref<x10::array::Point>
      __implicit_convert(x10aux::ref<x10::array::Array<TPMGL(T)> > a);
    virtual x10aux::ref<x10::array::Point> __plus();
    virtual x10aux::ref<x10::array::Point> __minus();
    virtual x10aux::ref<x10::array::Point> __plus(x10aux::ref<x10::array::Point> that);
    virtual x10aux::ref<x10::array::Point> __minus(x10aux::ref<x10::array::Point> that);
    virtual x10aux::ref<x10::array::Point> __times(x10aux::ref<x10::array::Point> that);
    virtual x10aux::ref<x10::array::Point> __over(x10aux::ref<x10::array::Point> that);
    virtual x10aux::ref<x10::array::Point> __plus(x10_int c);
    virtual x10aux::ref<x10::array::Point> __minus(x10_int c);
    virtual x10aux::ref<x10::array::Point> __times(x10_int c);
    virtual x10aux::ref<x10::array::Point> __over(x10_int c);
    virtual x10aux::ref<x10::array::Point> __inv_plus(x10_int c);
    virtual x10aux::ref<x10::array::Point> __inv_minus(x10_int c);
    virtual x10aux::ref<x10::array::Point> __inv_times(x10_int c);
    virtual x10aux::ref<x10::array::Point> __inv_over(x10_int c);
    virtual x10_int compareTo(x10aux::ref<x10::array::Point> that);
    virtual x10_int hashCode();
    virtual x10_boolean equals(x10aux::ref<x10::lang::Any> other);
    virtual x10_boolean __lt(x10aux::ref<x10::array::Point> that);
    virtual x10_boolean __gt(x10aux::ref<x10::array::Point> that);
    virtual x10_boolean __le(x10aux::ref<x10::array::Point> that);
    virtual x10_boolean __ge(x10aux::ref<x10::array::Point> that);
    virtual x10aux::ref<x10::lang::String> toString();
    virtual x10aux::ref<x10::array::Point> x10__array__Point____x10__array__Point__this(
      );
    
    // Serialization
    public: static const x10aux::serialization_id_t _serialization_id;
    
    public: x10aux::serialization_id_t _get_serialization_id() {
         return _serialization_id;
    }
    
    public: virtual void _serialize_body(x10aux::serialization_buffer& buf);
    
    public: static x10aux::ref<x10::lang::Reference> _deserializer(x10aux::deserialization_buffer& buf);
    
    public: void _deserialize_body(x10aux::deserialization_buffer& buf);
    
};

} } 
#endif // X10_ARRAY_POINT_H

namespace x10 { namespace array { 
class Point;
} } 

#ifndef X10_ARRAY_POINT_H_NODEPS
#define X10_ARRAY_POINT_H_NODEPS
#include <x10/lang/Object.h>
#include <x10/lang/Fun_0_1.h>
#include <x10/util/Ordered.h>
#include <x10/lang/Comparable.h>
#include <x10/lang/Int.h>
#include <x10/array/Array.h>
#include <x10/lang/ArrayIndexOutOfBoundsException.h>
#include <x10/lang/String.h>
#include <x10/lang/Boolean.h>
#include <x10/compiler/CompilerFlags.h>
#include <x10/lang/FailedDynamicCheckException.h>
#include <x10/lang/Any.h>
#ifndef X10_ARRAY_POINT__CLOSURE__3_CLOSURE
#define X10_ARRAY_POINT__CLOSURE__3_CLOSURE
#include <x10/lang/Closure.h>
#include <x10/lang/Fun_0_1.h>
template<class TPMGL(T)> class x10_array_Point__closure__3 : public x10::lang::Closure {
    public:
    
    static typename x10::lang::Fun_0_1<x10_int, TPMGL(T)>::template itable <x10_array_Point__closure__3<TPMGL(T) > > _itable;
    static x10aux::itable_entry _itables[2];
    
    virtual x10aux::itable_entry* _getITables() { return _itables; }
    
    // closure body
    TPMGL(T) __apply(x10_int i) {
        
        //#line 106 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
        return x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                 i);
        
    }
    
    // captured environment
    x10aux::ref<x10::array::Array<TPMGL(T)> > r;
    
    x10aux::serialization_id_t _get_serialization_id() {
        return _serialization_id;
    }
    
    void _serialize_body(x10aux::serialization_buffer &buf) {
        buf.write(this->r);
    }
    
    template<class __T> static x10aux::ref<__T> _deserialize(x10aux::deserialization_buffer &buf) {
        x10_array_Point__closure__3<TPMGL(T) >* storage = x10aux::alloc<x10_array_Point__closure__3<TPMGL(T) > >();
        buf.record_reference(x10aux::ref<x10_array_Point__closure__3<TPMGL(T) > >(storage));
        x10aux::ref<x10::array::Array<TPMGL(T)> > that_r = buf.read<x10aux::ref<x10::array::Array<TPMGL(T)> > >();
        x10aux::ref<x10_array_Point__closure__3<TPMGL(T) > > this_ = new (storage) x10_array_Point__closure__3<TPMGL(T) >(that_r);
        return this_;
    }
    
    x10_array_Point__closure__3(x10aux::ref<x10::array::Array<TPMGL(T)> > r) : r(r) { }
    
    static const x10aux::serialization_id_t _serialization_id;
    
    static const x10aux::RuntimeType* getRTT() { return x10aux::getRTT<x10::lang::Fun_0_1<x10_int, TPMGL(T)> >(); }
    virtual const x10aux::RuntimeType *_type() const { return x10aux::getRTT<x10::lang::Fun_0_1<x10_int, TPMGL(T)> >(); }
    
    x10aux::ref<x10::lang::String> toString() {
        return x10aux::string_utils::lit(this->toNativeString());
    }
    
    const char* toNativeString() {
        return "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10:106";
    }

};

template<class TPMGL(T)> typename x10::lang::Fun_0_1<x10_int, TPMGL(T)>::template itable <x10_array_Point__closure__3<TPMGL(T) > >x10_array_Point__closure__3<TPMGL(T) >::_itable(&x10::lang::Reference::equals, &x10::lang::Closure::hashCode, &x10_array_Point__closure__3<TPMGL(T) >::__apply, &x10_array_Point__closure__3<TPMGL(T) >::toString, &x10::lang::Closure::typeName);
template<class TPMGL(T)> x10aux::itable_entry x10_array_Point__closure__3<TPMGL(T) >::_itables[2] = {x10aux::itable_entry(&x10aux::getRTT<x10::lang::Fun_0_1<x10_int, TPMGL(T)> >, &x10_array_Point__closure__3<TPMGL(T) >::_itable),x10aux::itable_entry(NULL, NULL)};

template<class TPMGL(T)> const x10aux::serialization_id_t x10_array_Point__closure__3<TPMGL(T) >::_serialization_id = 
    x10aux::DeserializationDispatcher::addDeserializer(x10_array_Point__closure__3<TPMGL(T) >::template _deserialize<x10::lang::Reference>,x10aux::CLOSURE_KIND_NOT_ASYNC);

#endif // X10_ARRAY_POINT__CLOSURE__3_CLOSURE
#ifndef X10_ARRAY_POINT__CLOSURE__2_CLOSURE
#define X10_ARRAY_POINT__CLOSURE__2_CLOSURE
#include <x10/lang/Closure.h>
#include <x10/lang/Fun_0_1.h>
template<class TPMGL(T)> class x10_array_Point__closure__2 : public x10::lang::Closure {
    public:
    
    static typename x10::lang::Fun_0_1<x10_int, x10_int>::template itable <x10_array_Point__closure__2<TPMGL(T) > > _itable;
    static x10aux::itable_entry _itables[2];
    
    virtual x10aux::itable_entry* _getITables() { return _itables; }
    
    // closure body
    x10_int __apply(x10_int arg51901) {
        
        //#line 106 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
        return x10aux::class_cast_unchecked<x10_int>(x10_array_Point__closure__3<TPMGL(T)>(r).__apply(arg51901));
        
    }
    
    // captured environment
    x10aux::ref<x10::array::Array<TPMGL(T)> > r;
    
    x10aux::serialization_id_t _get_serialization_id() {
        return _serialization_id;
    }
    
    void _serialize_body(x10aux::serialization_buffer &buf) {
        buf.write(this->r);
    }
    
    template<class __T> static x10aux::ref<__T> _deserialize(x10aux::deserialization_buffer &buf) {
        x10_array_Point__closure__2<TPMGL(T) >* storage = x10aux::alloc<x10_array_Point__closure__2<TPMGL(T) > >();
        buf.record_reference(x10aux::ref<x10_array_Point__closure__2<TPMGL(T) > >(storage));
        x10aux::ref<x10::array::Array<TPMGL(T)> > that_r = buf.read<x10aux::ref<x10::array::Array<TPMGL(T)> > >();
        x10aux::ref<x10_array_Point__closure__2<TPMGL(T) > > this_ = new (storage) x10_array_Point__closure__2<TPMGL(T) >(that_r);
        return this_;
    }
    
    x10_array_Point__closure__2(x10aux::ref<x10::array::Array<TPMGL(T)> > r) : r(r) { }
    
    static const x10aux::serialization_id_t _serialization_id;
    
    static const x10aux::RuntimeType* getRTT() { return x10aux::getRTT<x10::lang::Fun_0_1<x10_int, x10_int> >(); }
    virtual const x10aux::RuntimeType *_type() const { return x10aux::getRTT<x10::lang::Fun_0_1<x10_int, x10_int> >(); }
    
    x10aux::ref<x10::lang::String> toString() {
        return x10aux::string_utils::lit(this->toNativeString());
    }
    
    const char* toNativeString() {
        return "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10:106";
    }

};

template<class TPMGL(T)> typename x10::lang::Fun_0_1<x10_int, x10_int>::template itable <x10_array_Point__closure__2<TPMGL(T) > >x10_array_Point__closure__2<TPMGL(T) >::_itable(&x10::lang::Reference::equals, &x10::lang::Closure::hashCode, &x10_array_Point__closure__2<TPMGL(T) >::__apply, &x10_array_Point__closure__2<TPMGL(T) >::toString, &x10::lang::Closure::typeName);
template<class TPMGL(T)> x10aux::itable_entry x10_array_Point__closure__2<TPMGL(T) >::_itables[2] = {x10aux::itable_entry(&x10aux::getRTT<x10::lang::Fun_0_1<x10_int, x10_int> >, &x10_array_Point__closure__2<TPMGL(T) >::_itable),x10aux::itable_entry(NULL, NULL)};

template<class TPMGL(T)> const x10aux::serialization_id_t x10_array_Point__closure__2<TPMGL(T) >::_serialization_id = 
    x10aux::DeserializationDispatcher::addDeserializer(x10_array_Point__closure__2<TPMGL(T) >::template _deserialize<x10::lang::Reference>,x10aux::CLOSURE_KIND_NOT_ASYNC);

#endif // X10_ARRAY_POINT__CLOSURE__2_CLOSURE
#ifndef X10_ARRAY_POINT_H_GENERICS
#define X10_ARRAY_POINT_H_GENERICS
#ifndef X10_ARRAY_POINT_H_make_297
#define X10_ARRAY_POINT_H_make_297
template<class TPMGL(T)> x10aux::ref<x10::array::Point> x10::array::Point::make(
  x10aux::ref<x10::array::Array<TPMGL(T)> > r) {
    
    //#line 101 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Switch_c
    switch (x10aux::nullCheck(r)->FMGL(size)) {
        
        //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Case_c
        case ((x10_int)1): ;
        {
            
            //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
            return (__extension__ ({
                
                //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> __desugarer__var__23__36058 =
                  x10::array::Point::_make(x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)0))));
                
                //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> ret36059;
                
                //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                if (!((x10aux::struct_equals(x10aux::nullCheck(__desugarer__var__23__36058)->
                                               FMGL(rank),
                                             x10aux::nullCheck(r)->
                                               FMGL(size)))))
                {
                    
                    //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                    if (true) {
                        
                        //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Throw_c
                        x10aux::throwException(x10aux::nullCheck(x10::lang::FailedDynamicCheckException::_make(x10aux::string_utils::lit("x10.array.Point{self.rank==r.size}"))));
                    }
                    
                }
                
                //#line 102 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": Eval of x10.ast.X10LocalAssign_c
                ret36059 = __desugarer__var__23__36058;
                ret36059;
            }))
            ;
            
        }
        //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Case_c
        case ((x10_int)2): ;
        {
            
            //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
            return (__extension__ ({
                
                //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> __desugarer__var__24__36061 =
                  x10::array::Point::_make(x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)0))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)1))));
                
                //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> ret36062;
                
                //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                if (!((x10aux::struct_equals(x10aux::nullCheck(__desugarer__var__24__36061)->
                                               FMGL(rank),
                                             x10aux::nullCheck(r)->
                                               FMGL(size)))))
                {
                    
                    //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                    if (true) {
                        
                        //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Throw_c
                        x10aux::throwException(x10aux::nullCheck(x10::lang::FailedDynamicCheckException::_make(x10aux::string_utils::lit("x10.array.Point{self.rank==r.size}"))));
                    }
                    
                }
                
                //#line 103 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": Eval of x10.ast.X10LocalAssign_c
                ret36062 = __desugarer__var__24__36061;
                ret36062;
            }))
            ;
            
        }
        //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Case_c
        case ((x10_int)3): ;
        {
            
            //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
            return (__extension__ ({
                
                //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> __desugarer__var__25__36064 =
                  x10::array::Point::_make(x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)0))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)1))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)2))));
                
                //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> ret36065;
                
                //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                if (!((x10aux::struct_equals(x10aux::nullCheck(__desugarer__var__25__36064)->
                                               FMGL(rank),
                                             x10aux::nullCheck(r)->
                                               FMGL(size)))))
                {
                    
                    //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                    if (true) {
                        
                        //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Throw_c
                        x10aux::throwException(x10aux::nullCheck(x10::lang::FailedDynamicCheckException::_make(x10aux::string_utils::lit("x10.array.Point{self.rank==r.size}"))));
                    }
                    
                }
                
                //#line 104 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": Eval of x10.ast.X10LocalAssign_c
                ret36065 = __desugarer__var__25__36064;
                ret36065;
            }))
            ;
            
        }
        //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Case_c
        case ((x10_int)4): ;
        {
            
            //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
            return (__extension__ ({
                
                //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> __desugarer__var__26__36067 =
                  x10::array::Point::_make(x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)0))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)1))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)2))),
                                           x10aux::class_cast_unchecked<x10_int>(x10aux::nullCheck(r)->x10::array::Array<TPMGL(T)>::__apply(
                                                                                   ((x10_int)3))));
                
                //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10LocalDecl_c
                x10aux::ref<x10::array::Point> ret36068;
                
                //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                if (!((x10aux::struct_equals(x10aux::nullCheck(__desugarer__var__26__36067)->
                                               FMGL(rank),
                                             x10aux::nullCheck(r)->
                                               FMGL(size)))))
                {
                    
                    //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10If_c
                    if (true) {
                        
                        //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Throw_c
                        x10aux::throwException(x10aux::nullCheck(x10::lang::FailedDynamicCheckException::_make(x10aux::string_utils::lit("x10.array.Point{self.rank==r.size}"))));
                    }
                    
                }
                
                //#line 105 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": Eval of x10.ast.X10LocalAssign_c
                ret36068 = __desugarer__var__26__36067;
                ret36068;
            }))
            ;
            
        }
        //#line 106 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": polyglot.ast.Case_c
        default: ;
        {
            
            //#line 106 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
            return x10::array::Point::_make(x10::array::Array<x10_int>::_make(x10aux::nullCheck(r)->
                                                                                FMGL(size),
                                                                              x10aux::ref<x10::lang::Fun_0_1<x10_int, x10_int> >(x10aux::ref<x10_array_Point__closure__2<TPMGL(T) > >(new (x10aux::alloc<x10::lang::Fun_0_1<x10_int, x10_int> >(sizeof(x10_array_Point__closure__2<TPMGL(T)>)))x10_array_Point__closure__2<TPMGL(T)>(r)))));
            
        }
    }
}
#endif // X10_ARRAY_POINT_H_make_297
#ifndef X10_ARRAY_POINT_H_implicit_operator_as_303
#define X10_ARRAY_POINT_H_implicit_operator_as_303
template<class TPMGL(T)> x10aux::ref<x10::array::Point> x10::array::Point::__implicit_convert(
  x10aux::ref<x10::array::Array<TPMGL(T)> > a) {
    
    //#line 132 "/wrkdirs/usr/ports/lang/x10/work/x10.runtime/src-x10/x10/array/Point.x10": x10.ast.X10Return_c
    return x10::array::Point::template make<TPMGL(T) >(a);
    
}
#endif // X10_ARRAY_POINT_H_implicit_operator_as_303
#endif // X10_ARRAY_POINT_H_GENERICS
#endif // __X10_ARRAY_POINT_H_NODEPS
