&& (high == 1))
&& (high == 1) && (ffebld_conter_orig (next->upper) == NULL))
ffestt_dimlist_as_expr (ffesttDimList list, ffeinfoRank *rank,			ffebld *array_size, ffebld *extents){  ffesttDimList next;  ffebld expr;  ffebld as;  ffebld ex;			/* List of extents. */  ffebld ext;			/* Extent of a given dimension. */  ffebldListBottom bottom;  ffeinfoRank r;  ffeinfoKindtype nkt;  ffetargetIntegerDefault low;  ffetargetIntegerDefault high;  bool zero = FALSE;		/* Zero-size array. */  bool any = FALSE;  bool star = FALSE;		/* Adjustable array. */  assert (list != NULL);  r = 0;  ffebld_init_list (&expr, &bottom);  for (next = list->next; next != list; next = next->next)    {      ++r;      if (((next->lower == NULL)	   || (ffebld_op (next->lower) == FFEBLD_opCONTER))	  && (ffebld_op (next->upper) == FFEBLD_opCONTER))	{	  if (next->lower == NULL)	    low = 1;	  else	    low = ffebld_constant_integerdefault (ffebld_conter (next->lower));	  high = ffebld_constant_integerdefault (ffebld_conter (next->upper));	  if (low	      > high)	    zero = TRUE;	  if ((next->next == list)	      && ffe_is_ugly_assumed ()	      && (next->lower == NULL)	      && (high == 1))	    {	      star = TRUE;	      ffebld_append_item (&bottom,				  ffebld_new_bounds (NULL, ffebld_new_star ()));	      continue;	    }	}      else if (((next->lower != NULL)		&& (ffebld_op (next->lower) == FFEBLD_opANY))	       || (ffebld_op (next->upper) == FFEBLD_opANY))	any = TRUE;      else if (ffebld_op (next->upper) == FFEBLD_opSTAR)	star = TRUE;      ffebld_append_item (&bottom,			  ffebld_new_bounds (next->lower, next->upper));    }  ffebld_end_list (&bottom);  if (zero)    {      as = ffebld_new_conter (ffebld_constant_new_integerdefault_val (0));      ffebld_set_info (as, ffeinfo_new		       (FFEINFO_basictypeINTEGER,			FFEINFO_kindtypeINTEGERDEFAULT,			0,			FFEINFO_kindENTITY,			FFEINFO_whereCONSTANT,			FFETARGET_charactersizeNONE));      ex = NULL;    }  else if (any)    {      as = ffebld_new_any ();      ffebld_set_info (as, ffeinfo_new_any ());      ex = ffebld_copy (as);    }  else if (star)    {      as = ffebld_new_star ();      ex = ffebld_new_star ();	/* ~~Should really be list as below. */    }  else    {      as = NULL;      ffebld_init_list (&ex, &bottom);      for (next = list->next; next != list; next = next->next)	{	  if ((next->lower == NULL)	      || ((ffebld_op (next->lower) == FFEBLD_opCONTER)		  && (ffebld_constant_integerdefault (ffebld_conter						      (next->lower)) == 1)))	    ext = ffebld_copy (next->upper);	  else	    {	      ext = ffebld_new_subtract (next->upper, next->lower);	      nkt		= ffeinfo_kindtype_max (FFEINFO_basictypeINTEGER,					ffeinfo_kindtype (ffebld_info							  (next->lower)),					ffeinfo_kindtype (ffebld_info							  (next->upper)));	      ffebld_set_info (ext,			       ffeinfo_new (FFEINFO_basictypeINTEGER,					    nkt,					    0,					    FFEINFO_kindENTITY,					    ((ffebld_op (ffebld_left (ext))					      == FFEBLD_opCONTER)					     && (ffebld_op (ffebld_right							    (ext))						 == FFEBLD_opCONTER))					    ? FFEINFO_whereCONSTANT					    : FFEINFO_whereFLEETING,					    FFETARGET_charactersizeNONE));	      ffebld_set_left (ext,			       ffeexpr_convert_expr (ffebld_left (ext),						     next->t, ext, next->t,						     FFEEXPR_contextLET));	      ffebld_set_right (ext,				ffeexpr_convert_expr (ffebld_right (ext),						      next->t, ext,						      next->t,						      FFEEXPR_contextLET));	      ext = ffeexpr_collapse_subtract (ext, next->t);	      nkt		= ffeinfo_kindtype_max (FFEINFO_basictypeINTEGER,					ffeinfo_kindtype (ffebld_info (ext)),					FFEINFO_kindtypeINTEGERDEFAULT);	      ext		= ffebld_new_add (ext,				  ffebld_new_conter				  (ffebld_constant_new_integerdefault_val				   (1)));	      ffebld_set_info (ffebld_right (ext), ffeinfo_new			       (FFEINFO_basictypeINTEGER,				FFEINFO_kindtypeINTEGERDEFAULT,				0,				FFEINFO_kindENTITY,				FFEINFO_whereCONSTANT,				FFETARGET_charactersizeNONE));	      ffebld_set_info (ext,			       ffeinfo_new (FFEINFO_basictypeINTEGER,					    nkt, 0, FFEINFO_kindENTITY,					    (ffebld_op (ffebld_left (ext))					     == FFEBLD_opCONTER)					    ? FFEINFO_whereCONSTANT					    : FFEINFO_whereFLEETING,					    FFETARGET_charactersizeNONE));	      ffebld_set_left (ext,			       ffeexpr_convert_expr (ffebld_left (ext),						     next->t, ext,						     next->t,						     FFEEXPR_contextLET));	      ffebld_set_right (ext,				ffeexpr_convert_expr (ffebld_right (ext),						      next->t, ext,						      next->t,						      FFEEXPR_contextLET));	      ext = ffeexpr_collapse_add (ext, next->t);	    }	  ffebld_append_item (&bottom, ext);	  if (as == NULL)	    as = ext;	  else	    {	      nkt		= ffeinfo_kindtype_max (FFEINFO_basictypeINTEGER,					ffeinfo_kindtype (ffebld_info (as)),				      ffeinfo_kindtype (ffebld_info (ext)));	      as = ffebld_new_multiply (as, ext);	      ffebld_set_info (as,			       ffeinfo_new (FFEINFO_basictypeINTEGER,					    nkt, 0, FFEINFO_kindENTITY,					    ((ffebld_op (ffebld_left (as))					      == FFEBLD_opCONTER)					     && (ffebld_op (ffebld_right							    (as))						 == FFEBLD_opCONTER))					    ? FFEINFO_whereCONSTANT					    : FFEINFO_whereFLEETING,					    FFETARGET_charactersizeNONE));	      ffebld_set_left (as,			       ffeexpr_convert_expr (ffebld_left (as),						     next->t, as, next->t,						     FFEEXPR_contextLET));	      ffebld_set_right (as,				ffeexpr_convert_expr (ffebld_right (as),						      next->t, as,						      next->t,						      FFEEXPR_contextLET));	      as = ffeexpr_collapse_multiply (as, next->t);	    }	}      ffebld_end_list (&bottom);      as = ffeexpr_convert (as, list->next->t, NULL,			    FFEINFO_basictypeINTEGER,			    FFEINFO_kindtypeINTEGERDEFAULT, 0,			    FFETARGET_charactersizeNONE,			    FFEEXPR_contextLET);    }  *rank = r;  *array_size = as;  *extents = ex;  return expr;}